.\"   $Id: relprodbddnodeassoc.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
.\" @(#)relprodbddnodeassoc.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
.TH RELPRODBDDNODEASSOC 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
.SH NAME
relprodbddnodeassoc \- computes a relational product.
.so man1/alc_origin.1
.SH SYNOPSIS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include "bdd101.h"
bddnode \(**relprodbddnodeassoc( BddSystem, BddNode1, BddNode2, BddAssoc )
  bddsystem \(**BddSystem;
  bddnode   \(**BddNode1;
  bddnode   \(**BddNode2;
  bddassoc  \(**BddAssoc;
.ft R
.fi
.SH PARAMETERS
.TP 20
\fIBddSystem\fP
The \fBbdd\fP system.
.TP
\fIBddNode1\fP
The first \fBbdd\fP node.
.TP
\fIBddNode2\fP
The second \fBbdd\fP node.
.TP
\fIBddAssoc\fP
The variable association.
.SH DESCRIPTION
\fBrelprodbddnodeassoc\fP computes \fIBddNode1\fP AND \fIBddNode2\fP,
and suppress the variables associated with something in the variable association
\fIBddAssoc\fP, in the \fBbdd\fP system \fIBddSystem\fP.
If a null pointer is given, the default \fBbdd\fP system is used.
.br
.SH RETURN VALUE
\fBrelprodbddnodeassoc\fP returns the computed \fBbdd\fP node.
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"bad variable association xxx, error !"
.ft R
.RS
The \fIBddAssoc\fP parameter must a valid variable association.
.RE
.SH EXAMPLE
.ta 3n 6n 9n 12n 15n 18n 21n
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include "bdd101.h"
   bddsystem  \(**BddSystem;
   bddcircuit \(**BddCircuit;
   bddnode    \(**BddNode;
   bddnode    \(**BddNode1;
   bddnode    \(**BddNode2;
   bddnode    \(**BddVariable;
   bddassoc   \(**Assoc;
   chain_list \(**Expr;
   bddvar         Variable;
   BddSystem  = createbddsystem( 100, 1000, 100, 50000 );
   BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
   Expr = createablbinexpr( ABL_AND,
                            createablatom( "i0" ),
                            createablatom( "i1" ) );
   BddNode1 = addbddcircuitabl( BddCircuit, Expr );
   freeablexpr( Expr );
   Expr = createablbinexpr( ABL_OR,
                            createablatom( "i0" ),
                            createablatom( "i1" ) );
   BddNode2 = addbddcircuitabl( BddCircuit, Expr );
   freeablexpr( Expr );
   BddVariable = searchbddcircuitin( (bddcircuit \(**)0, "i0" );
   Variable = getbddvarbyindex( (bddsystem \(**)0, BddVariable->INDEX );
   Assoc = addbddassoc( (bddsystem \(**)0 );
   addbddnodeassoc( (bddsystem \(**)0, Assoc, Variable, BddSystem->ONE );
   BddNode = relprodbddnodeassoc( (bddsystem \(**)0, BddNode1, BddNode2, Assoc );
   Expr = convertbddcircuitabl( BddCircuit, BddNode );
   /* displays i1 */
   viewablexpr( Expr, ABL_VIEW_VHDL );
   freeablexpr( Expr );
   destroybddassoc( (bddsystem \(**)0 );
   destroybddsystem( (bddsystem \(**)0 );
   destroybddcircuit( (bddcircuit \(**)0 );
.ft R
.fi
.SH SEE ALSO
.BR bdd (1)


.so man1/alc_bug_report.1

